# -*- coding:utf-8 -*-
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['simsun'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

def oneEleOneM():
    # 一元一次函数图像
    x = np.arange(-10, 10, 0.1)
    y = 2 * x
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title("一元一次函数")
    plt.plot(x, y)
    plt.show()

def oneEleTwoM():
    # 一元二次函数图像
    x = np.arange(-10, 10, 0.1)
    y = x * x * 0.5
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title("一元二次函数")
    plt.plot(x, y)
    plt.show()

def squatM():
    # 开平方函数图像
    x = np.arange(0, 10, 1.0)
    y = np.power(x,2)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title("开平方函数")
    plt.plot(x, y)
    plt.show()

def logM():
    # 对数函数图像 在Numpy中以任意数为底的对数需要用到换底公式：
    #函数 功能
    #np.log(x) 以e为底的对数(自然对数)
    #np.log10(x) 以10为底的对数
    #np.log2(x) 以2为底的对数
    #np.log1p(x) 等价于：np.log(x + 1)
    #备注：np.expm1(x) 等价于 np.exp(x) - 1，也是np.log1p(x)的逆运算。
    x = np.arange(1, 10, 1.0)
    y = np.log(x)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title("对数函数")
    plt.plot(x, y)
    plt.show()

if __name__ == '__main__':
    #oneEleOneM()
    #oneEleTwoM()
    #squatM()
    logM()